// Step 1: 加载点数据 (例如，RiceFJ 为你的点集合)
var points = RiceFJ; // 替换为你的 FeatureCollection

// Step 2: 定义 NDPI 计算函数
function calculateNDPI(image) {
  var ndpi = image.expression(
    '(NIR - (0.74 * RED + 0.26 * SWIR)) / (NIR + (0.74 * RED + 0.26 * SWIR))', {
      'NIR': image.select('B8'),    // 近红外波段
      'RED': image.select('B4'),    // 红波段
      'SWIR': image.select('B11')   // 短波红外波段
    }).rename('NDPI');
  return image.addBands(ndpi); // 添加 NDPI 波段
}

// Step 3: 加载 Sentinel-2 数据集
var s2Collection = ee.ImageCollection('COPERNICUS/S2_SR_HARMONIZED')
  .filterDate('2022-01-01', '2022-12-31') // 时间范围
  .filterBounds(points) // 点的范围
  .filter(ee.Filter.lt('CLOUDY_PIXEL_PERCENTAGE', 20)) // 云覆盖限制
  .map(calculateNDPI); // 计算 NDPI

// Step 4: 按月分组 NDPI 并计算每个点的 NDPI 平均值
var months = ee.List.sequence(1, 12); // 定义月份范围
var year = 2022; // 定义年份

var monthlyNDPI = months.map(function(m) {
  var start = ee.Date.fromYMD(year, m, 1); // 月份起始日期
  var end = start.advance(1, 'month'); // 月份结束日期
  var monthlyComposite = s2Collection.filterDate(start, end).median(); // 每月 NDPI 中位数

  // 在点上提取 NDPI 值
  var sampled = monthlyComposite.select('NDPI').sampleRegions({
    collection: points,
    scale: 10, // 哨兵2号的分辨率
    geometries: true // 保留几何信息
  }).map(function(f) {
    return f.set('Month', m); // 添加月份字段
  });

  return sampled;
});

// 合并所有月份的结果
monthlyNDPI = ee.FeatureCollection(monthlyNDPI).flatten();
print('Monthly NDPI for Points', monthlyNDPI);

// Step 5: 导出结果为 CSV
Export.table.toDrive({
  collection: monthlyNDPI,
  description: 'Rice_Monthly_NDPI_22',
  fileFormat: 'CSV'
});

// Step 6: 在地图中显示点
Map.centerObject(points, 10);
Map.addLayer(points, {color: 'red'}, 'Points');
